package com.hello.system.service;

import com.hello.common.core.web.domain.AjaxResult;
import java.math.BigDecimal;
import java.util.Map;

/**
 * 微信支付服务接口
 * 
 * @author hello
 */
public interface IWxPayService {
    
    /**
     * 创建小程序支付订单
     * @param orderId 商户订单号
     * @param amount 支付金额
     * @param description 商品描述
     * @param openid 用户openid
     * @return 支付参数
     */
    Map<String, Object> createOrder(String orderId, BigDecimal amount, String description, String openid);
    
    /**
     * 创建小程序支付订单(带客户端IP)
     * @param orderId 商户订单号
     * @param amount 支付金额
     * @param description 商品描述
     * @param openid 用户openid
     * @param clientIp 客户端IP地址
     * @return 支付参数
     */
    default Map<String, Object> createOrder(String orderId, BigDecimal amount, String description, String openid, String clientIp) {
        return createOrder(orderId, amount, description, openid);
    }
    
    /**
     * 查询订单
     * @param orderId 商户订单号
     * @return 订单信息
     */
    Map<String, Object> queryOrder(String orderId);
    
    /**
     * 处理支付结果通知
     * @param notifyData 通知数据
     * @return 处理结果
     */
    String parseOrderNotification(String notifyData);
    
    /**
     * 申请退款
     * @param orderId 商户订单号
     * @param refundId 商户退款单号
     * @param amount 退款金额
     * @param totalAmount 原订单金额
     * @param reason 退款原因
     * @return 退款结果
     */
    Map<String, Object> refund(String orderId, String refundId, BigDecimal amount, 
                            BigDecimal totalAmount, String reason);
} 